<!--
  This file is a part of the open-eBackup project.
  This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
  If a copy of the MPL was not distributed with this file, You can obtain one at
  http://mozilla.org/MPL/2.0/.
  
  Copyright (c) [2024] Huawei Technologies Co.,Ltd.
  
  THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
  EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
  MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
  -->

<lv-form [formGroup]="formGroup" class="formGroup" lvKeepRequiredWidth>
  <lv-form-item *ngIf="!isDrill">
    <lv-form-label>
      {{ 'protection_restore_to_label' | i18n }}
    </lv-form-label>
    <lv-form-control>
      <lv-radio-group
        formControlName="restoreTo"
        [lvGroupName]="'restoreToGroup'"
      >
        <lv-group [lvGutter]="'20px'">
          <lv-radio
            [lvValue]="restoreLocationType.ORIGIN"
            [lvDisabled]="disableOriginLocation"
            [lv-tooltip]="
              disableOriginLocation
                ? ('protection_cloud_origin_restore_disabled_label' | i18n)
                : ''
            "
          >
            {{ 'common_restore_to_origin_location_label' | i18n }}
          </lv-radio>
          <lv-radio [lvValue]="restoreLocationType.NEW">
            {{ 'common_restore_to_new_location_label' | i18n }}
          </lv-radio>
        </lv-group>
      </lv-radio-group>
    </lv-form-control>
  </lv-form-item>
  <ng-container
    *ngIf="formGroup.value.restoreTo === restoreLocationType.ORIGIN"
  >
    <lv-form-item>
      <lv-form-label>
        {{ location }}
      </lv-form-label>
      <lv-form-control>
        <input type="text" formControlName="originalHost" lv-input />
      </lv-form-control>
    </lv-form-item>
  </ng-container>
  <ng-container *ngIf="formGroup.value.restoreTo === restoreLocationType.NEW">
    <aui-select-tag
      [formGroup]="formGroup"
      (updateTable)="updateTable($event)"
      [targetKey]="'host'"
      [isAgentTag]="true"
    ></aui-select-tag>
    <lv-form-item>
      <lv-form-label lvRequired>
        {{ location }}
      </lv-form-label>
      <lv-form-control>
        <lv-select
          formControlName="host"
          [lvOptions]="options"
          lvValueKey="key"
          lvShowFilter
          lvFilterKey="label"
          lvFilterMode="contains"
          [lvDisabled]="
            formGroup.value.restoreTo === restoreLocationType.ORIGIN
          "
        >
        </lv-select>
      </lv-form-control>
    </lv-form-item>
    <lv-form-item>
      <lv-form-label lvRequired>
        {{ 'protection_target_instance_label' | i18n }}
      </lv-form-label>
      <lv-form-control>
        <lv-select
          formControlName="instance"
          [lvOptions]="instanceOptions"
          lvValueKey="key"
          lvShowFilter
          lvFilterKey="label"
          lvFilterMode="contains"
        >
        </lv-select>
      </lv-form-control>
    </lv-form-item>
    <ng-container *ngIf="!isSupport">
      <lv-form-item>
        <lv-form-label lvRequired>
          {{ 'common_destination_path_label' | i18n }}
          <i
            lv-icon="aui-icon-help"
            lv-tooltip="{{ 'protection_target_path_tips_label' | i18n }}"
            lvTooltipTheme="light"
            class="configform-constraint"
            lvColorState="true"
          ></i>
        </lv-form-label>
        <lv-form-control [lvErrorTip]="pathErrorTip">
          <input lv-input type="text" formControlName="path" />
        </lv-form-control>
      </lv-form-item>
    </ng-container>
  </ng-container>
  <lv-form-item>
    <lv-form-label>
      {{ 'common_databsae_rename_label' | i18n }}
    </lv-form-label>
    <lv-form-control>
      <lv-switch formControlName="replaceDatabase"></lv-switch>
    </lv-form-control>
  </lv-form-item>
  <div *ngIf="formGroup.value.replaceDatabase">
    <lv-form-item>
      <lv-form-label lvRequired>
        {{ 'protection_new_name_label' | i18n }}
        <i
          lv-icon="aui-icon-help"
          [lv-tooltip]="tipsTemplate"
          lvTooltipTheme="light"
          class="configform-constraint"
          lvColorState="true"
        >
        </i>
        <ng-template #tipsTemplate>
          <span
            innerHTML="{{ 'protection_sqlserver_new_name_tips_label' | i18n }}"
          ></span>
        </ng-template>
      </lv-form-label>
      <lv-form-control [lvErrorTip]="newNameErrorTip">
        <input lv-input formControlName="newName" style="width: 380px;" />
      </lv-form-control>
    </lv-form-item>
    <div *ngIf="formGroup?.get('newName').status === 'VALID'">
      <i
        style="display: inline-block; margin-right: 4px;"
        lv-icon="lv-icon-status-info"
        lvColorState="true"
        class="type-icon"
      ></i>
      <span class="form-tips">
        {{ 'protection_mysql_same_database_tips_label' | i18n }}
      </span>
    </div>
  </div>
  <div class="advanced-container" *ngIf="!isDrill">
    <lv-collapse [lvType]="'simple'">
      <lv-collapse-panel [lvTitle]="titleTpl" [lvExpanded]="false">
        <lv-form-item>
          <lv-form-label>
            {{ 'protection_restore_pre_script_label' | i18n }}
            <i
              lv-icon="aui-icon-help"
              lvTooltipTheme="light"
              lv-tooltip="{{
                'common_script_sqlserver_windows_help_label' | i18n
              }}"
              class="configform-constraint"
              lvColorState="true"
            >
            </i>
          </lv-form-label>
          <lv-form-control [lvErrorTip]="scriptErrorTip">
            <input
              formControlName="preScript"
              lv-input
              placeholder="{{
                'common_script_windows_placeholder_label' | i18n
              }}"
            />
          </lv-form-control>
        </lv-form-item>
        <lv-form-item>
          <lv-form-label>
            {{ 'protection_restore_post_script_label' | i18n }}
            <i
              lv-icon="aui-icon-help"
              lvTooltipTheme="light"
              lv-tooltip="{{
                'common_script_sqlserver_windows_help_label' | i18n
              }}"
              class="configform-constraint"
              lvColorState="true"
            >
            </i>
          </lv-form-label>
          <lv-form-control [lvErrorTip]="scriptErrorTip">
            <input
              formControlName="postScript"
              lv-input
              placeholder="{{
                'common_script_windows_placeholder_label' | i18n
              }}"
            />
          </lv-form-control>
        </lv-form-item>
        <lv-form-item>
          <lv-form-label>
            {{ 'protection_restore_fail_script_label' | i18n }}
            <i
              lv-icon="aui-icon-help"
              lvTooltipTheme="light"
              lv-tooltip="{{
                'common_script_sqlserver_windows_help_label' | i18n
              }}"
              class="configform-constraint"
              lvColorState="true"
            >
            </i>
          </lv-form-label>
          <lv-form-control [lvErrorTip]="scriptErrorTip">
            <input
              formControlName="executeScript"
              lv-input
              placeholder="{{
                'common_script_windows_placeholder_label' | i18n
              }}"
            />
          </lv-form-control>
        </lv-form-item>
      </lv-collapse-panel>
    </lv-collapse>
  </div>
</lv-form>

<ng-template #titleTpl>
  <lv-group lvGutter="2px">
    <span class="aui-h3">{{ 'common_advanced_label' | i18n }}</span>
    <i
      lv-icon="aui-icon-help"
      lvTooltipTheme="light"
      lv-tooltip="{{ 'protection_recovery_advance_params_desc1_label' | i18n }}"
      lvColorState="true"
    >
    </i>
  </lv-group>
</ng-template>
